package lspay

import (
	"encoding/json"
)

type MerchantGetOrderRequest struct {
	MerchantId uint32 `json:"merchantId"`
	// 商户订单No
	OutTradeNo string `json:"outTradeNo"`
}

// Bytes 把结构体序列化为字节数组
func (p *MerchantGetOrderRequest) Bytes() []byte {
	bs, _ := json.Marshal(p)
	return bs
}

type MerchantGetOrderReply struct {
	Detail *Order `json:"detail"`
}

type Order struct {
	// 主键
	ID uint32 `json:"id"`
	// 订单号
	No string `json:"no"`
	// 商户订单No
	OutTradeNo string `json:"outTradeNo"`
	// 金额
	Amount int64 `json:"amount"`
	// 订单状态
	Status PayStatus `json:"status"`
	// 创建时间
	CreatedAt int64 `json:"createdAt"`
	// 更新时间
	UpdatedAt int64 `json:"updatedAt"`
	// 商户ID
	MerchantID uint32 `json:"merchantId"`
	// 产品ID
	ProductID uint32 `json:"productId"`
	// 自定义产品信息
	CustomProduct *PayCenterProduct `json:"customProduct"`
	// 支付参数
	PayParams string `json:"payParams"`
	// 支付方式
	PayModeType PayModeType `json:"payModeType"`
	// 支付渠道
	PayChannel PayChannelType `json:"payChannel"`
	// 回调参数
	CallbackParams *OrderCallbackParams `json:"callbackParams"`
	// 订单回调
	NotifyURL string `json:"notifyURL"`
}

type OrderCallbackParams struct {
	AppId          string `json:"app_id"`
	AuthAppId      string `json:"auth_app_id"`
	BuyerId        string `json:"buyer_id"`
	BuyerLogonId   string `json:"buyer_logon_id"`
	BuyerPayAmount string `json:"buyer_pay_amount"`
	Charset        string `json:"charset"`
	FundBillList   string `json:"fund_bill_list"`
	GmtCreate      string `json:"gmt_create"`
	GmtPayment     string `json:"gmt_payment"`
	InvoiceAmount  string `json:"invoice_amount"`
	NotifyId       string `json:"notify_id"`
	NotifyTime     string `json:"notify_time"`
	NotifyType     string `json:"notify_type"`
	OutTradeNo     string `json:"out_trade_no"`
	PointAmount    string `json:"point_amount"`
	ReceiptAmount  string `json:"receipt_amount"`
	SellerEmail    string `json:"seller_email"`
	SellerId       string `json:"seller_id"`
	Subject        string `json:"subject"`
	TotalAmount    string `json:"total_amount"`
	TradeNo        string `json:"trade_no"`
	TradeStatus    string `json:"trade_status"`
	Version        string `json:"version"`
}
